﻿using System.Collections.Generic;
using System.Runtime.Serialization;

namespace SharedObjects
{
	[DataContract]
	[ReferencedBy(typeof(Agent))]
	public class Agent : EntityBase
	{
		[DataMember]
		[Required]
		public string DisplayName { get; set; }
		
		[DataMember]
		[Required]
		public Corporation Corporation { get; set; }

		[DataMember]
		public List<SavedConnection> SavedConnections { get; set; }

		[DataMember]
		public List<ulong> ComputerSystemIds { get; set; } //note: a list of Guids might suffice here. Less data and quicker to fetch data for the map, too.

		//note: bottom-up required.
		[DataMember]
		public List<ComputerSystemAccount> ComputerSystemAccounts { get; set; }
		
		[DataMember]
		[Required]
		public Gateway Gateway { get; set; }
		
		//note: bottom up required.
		[DataMember]
		public List<UserProgram> UserPrograms { get; set; }

		[DataMember]
		public UsenetAccount UsenetAccount { get; set; }

		[DataMember]
		public List<EmailAccount> EmailAccounts { get; set; }

		[DataMember]
		public List<BankAccount> BankAccounts { get; set; }
		
		[DataMember]
		public List<IHardware> OwnedHardware { get; set; }
	}
}
